home *** CD-ROM | disk | FTP | other *** search
- -*-text-*-
- Branched ME to ME2
- DONE:
- - The init file is me2.mco. ME2 is the env var.
- - Added a maybe arg to (current-window). If arg, the current window is
- set to n.
- - change register to bag
- - (create-bag ?n), (free-bag bag-id ...)
- - added (create-buffer), (free-buffer), (nth-buffer)
- - add a maybe arg to (current-buffer). If arg, the current buffer is
- set to n
- - all buffer commands take buffer ids.
- - removed (kill-buffer)
- - removed (use-existing-buffer).
- - (read-file-hook) called after a file is read in.
- - added (goto-mark mark-id), (set-mark [mark-id]).
- - changed set mark routine that is bound to key to set-the-mark.
- - have shell-command return a error code.
- - removed query-replace and re-query-replace.
- - added search-replace and re-search-replace.
- - moved re-search-forward, re-search-reverse, search-forward, and
- search-reverse to Mutt.
- - cache some windows at startup to (hopefully) reduce malloc thrashing.
- Should also think about caching buffers and bags.
- - Changed the way single line edits updates are done to fix a bug.
- - Moved (goto-line n) to Mutt. Added functionality: if n < 0, goes to
- nth line from end of buffer.
- - remove CR not giving a new line if a blank line is below.
- - do more error checking in edinit().
- - Removed (buffer-var) and (buffer-string)
- - Added (create-buffer-var type name ...) and (buffer-var name [val]).
- - Replaced (filter-region) with (OS-filter).
- - Added (create-mark [n]) and (free-mark mark-id [n]). Now have a
- unlimited number of marks per buffer.
- - Changed (compare-dot-and-mark) to (compare-marks [mark1 mark2]).
- - Added args to (region-stats). Is now (region-stats blob [mark1 mark2]).
- Defaults to (DOT,THE-MARK).
- - Removed (next-buffer). Rewrote in mutt (hidebuf.mut). Ignores
- Hidden2 buffers.
- - Modified (nth-buffer) to return the count of the current buffer if no
- args.
- - Modified (load) to take a search path ala Unix ksh (using the ME2 env
- var). Current directory no longer automatically searched. Hopefully,
- this will add support for lots of ME2 users using same .mco files and
- minor extensions.
- - Added a tickle bit in the buffer flags for the the modified bit:
- BFMode (0x10). Its write-only, it can't be set, is always 0. If
- tickle it, all the modelines for the buffer are updated. Use like so:
- (buffer-flags -1 BFMode). Use it when you need to force modeline-hook
- to be called for a buffer.
- - (buffer-flags ...) now properly reacts to the all the flags. Used to
- not do much if the modified bit was changed. Now will update
- modelines if needbe. Note that modelines ONLY updated if the state of
- the bit changes. Set the modified bit with (buffer-modified) and
- (buffer-flags) have the same results.
- - UNDO prototyped and working (1/91).
- - Dot is just mark 0.
- - Removed case routines because they don't undo.
- Routines removed: (case-region-lower), (case-region-upper),
- (case-word-capitalize), (case-word-lower), (case-word-upper)
- Replaced with:
- (case-text op bag-id op) where op is one of upper case, lower case
- or capitalize. Case match with another string or bag (or query
- replace) would be nice.
- See case.mut for the new user routines.
- - Added garbage collection for buffers, bags and marks (6/91). This
- will be intergrated into Mutt2 when that gets done. Added immortal
- bits to bags and buffers. Changed (create-bag) to (create-bag
- [immortal]). This is a limited gc, see other doc.
- - Added functionality to (append-to-bag). Can now append arbitrary
- region, characters or text to bag. 6/91
- - Added arg to (visit-file). If arg flag, use the current window to
- display the buffer. Suggestion from David J Bartrum
- <djb%gmsws.co.uk@hplb.hpl.hp.com>. 6/91
- - Added a "general" interrupt handler.
- - Added a SIGWINCH signal handler so ME2 can detect and react window
- size changes.
- - Moved garbage collection to process_hooks() because so many pgms are
- run as hooks. Hopfully, this speed things up. Relys on programmers
- being good most of the time.
- - Prototyped a very rudimentry interprocess communication scheme.
- Tested with a clock (another process) in the modeline (ticking every
- second). 7/91
- Can run makes and process the results as they happen.
- (Unix only): way to talk to a external process via signals and files
- (maybe pipes). This would allow things like concurrent compiles and
- viewing the output as it happens and editing would not be
- interrupted. Also would need a hook that is called when ex-proc
- sends something back to ME. I could also use this to implement
- "tell me when I have mail", system load and current time on the
- modeline.
- Provides a mechinism that allows a process ME knows nothing about to
- send ME messages that ME passes on to to a hook.
- - Modified the buffer var stuff to use the object manager (also used in
- MM). This added lists as a buffer var type. 9/91
- - Reworked the way I maintain marks (mark.c). Removed multiple
- allocatation of marks. Changed (create-mark) and (free-mark) to
- reflect these changes. 9/91
- - (OS-filter) is a bool. Doesn't abort if the filter fails. User
- request. 9/91
- - Added a sleazy hack to (load). If arg is 42 and the block already
- exists, it is not loaded again. This makes (require) work quiet and
- avoids loading things multiple times. 9/91
- - (bag-to-string bag-id) : returns bag contents as a string. 9/91
- - Added (swap-marks [mark-id [mark-id]]) 9/91
- - Modified (window-height) so it can resize a window. 10/91
- - Removed (enlarge-window) and (shrink-window). Rewrote them in Mutt.
- 10/91
- - Removed (copy-rectangle) and moved the functionality to
- (append-to-bag). 10/91
- - Changed the spelling of (isspace) to (is-space). 10/91
- - Renamed delete-window to free-window 10/91
- - Removed the buffer id from (clear-buffer). I always seem to clear the
- current buffer (its easy) and removes a thorn from undo. 10/91
- - Added boolean arg to (update). If false, only sync window and current
- buffer dots. Need this so I can have a window track a buffer while
- a program is running. 10/91
- - Made file-to-bag and bag-to-file bools (instead of void). In case you
- want to do something if an error occurs instead of die. 11/91
- - Changed all keywords with "kill" in them to "cut" or "delete". I'd
- rather not have programs that kill things - bad karma. 11/91
- - Added pgm-exists. I want/need this to implement maybe hooks (hooks
- that are only called if the hook exists). 12/91
- - Added buffer bit to mark "interactive" buffers and two "soft" hooks
- (hooks in Mutt code: iread-file and icreate-buffer) that are called
- if the buffer is marked interactive. I do too much stuff (markring,
- mode setting, etc) for buffers that don't need it. Could also use the
- mortal or nocare bits.
-
- TODO
- ? turn off signals when fork shell or pause? What if comserver sends
- stuff while paused? select on return? events_pending()
- - ReDO
- - UNDO tuning.
- - (create-file-name): Generate a unique file name ala (OS-filter).
- Used when need a filename in stuff that uses (shell-command). Gotta
- make sure that multiple calls generate different names.
- - (create-buffer-name file-name) Since this is OS specific, easier to
- do in C, etc.
- ? (forward-character n) (forward-word n)
- Are these worth it? Don't seem to be from the programs I've written.
- ? (delete-text n) Del n characters from dot. If <0, delete backwards.
- Is this worth it? The cheap hack in delete_characters() seems to be
- good enough for the programs I've written.
- - (region-to-mini) so I can yank a region to the command line and edit
- it (like grabing a compile line from the file). Could also do this
- with command line programming.
- ? Remove HELP and add help-hook with args to do help stuff.
- - When word wrap is on and you are banging on a white space key, the
- line is wrapped and you get an extra ws that you don't want. To fix:
- only wrap on non-ws?
- - make "space bar nukes msg line" configurable (via a sysvar?).
- - Need better ways to control name space pollution.
- Maybe something like (extern package block-name block-name ...). Then,
- to resolve a possible extern reference, search only those blocks.
- - Need a way to point local/global key bindings at the routine level.
- ie if a bunch of keys are bound to (next-buffer), I want to be able to
- have those keys invoke (new-next-buffer) for this buffer. I don't
- what to have to know what the keys are or remember them to undo this
- redirection. Could do this by having buffer local routines. It is
- eash to do this globally by just defuning a new routine called
- (next-buffer). All the keys will bind to it. Warning: If it is in a
- block of the same name, keys will get gc'ed.
- - Make overstrike a buffer local thing by having a flag in b_flags and
- set the global in use_buffer().
- - Bring out thisflag and lastflag so Mutt can do stuff like chained
- kills. Also, kbd macros don't use the flags right.
- - change all op that act between mark and dot to act between 2 marks.
- eg (erase-rectangle) -> (erase-rectangle mark1 mark2)
- ? (current-time) returns the time. What format? ascii, struct, ...?
- ? remove (compare-marks) cause its not used much.
- ? (copy-text-to-bag bag-id n) copy n characters from dot to bag.
- ? Remove kill buffer stuff from stuff like (delete-character).
- ? Remove insert-file. Can get the functionality with
- (file-to-bag)(insert-bag).
- - muttize bind routines, remove interactive ones.
- - Better error recovery in resize_display().
- - Have resize_display() not malloc() if the display size is smaller than
- current. This helps core dumps on UNIX. Also, don't reread termcap?
- ? (copy-to-bag) since its used so much.
- ? remove all stuffing of killbuffer as kill (line.c, killbuf.c).
- Instead, copy the data to a bag, then erase it. Con: maybe slower
- (2 passes), if close to the mem limit, might have more problems.
- ? (clear-mark mark-id ...)(clear-mark) clears all marks?
- ? inverse video an area between 2 marks
- ? (mark-exists mark-id)
- ? use fast string search - strstr().
- ? windows that are narrower and smaller that the screen that can be
- placed anywhere on the screen. ie disjoint windows - would also be
- handi for windowing systems. Also, the popup menu packages could be
- spiffed up.
- - Ability to command complete arbitrary lists.
- ? (file-read) reads the file. You have to check. No asking.
- Can get this with (clear-buffer -1)(read-file foo)
- - Try to remove ABORT as much as possible.
- ? Have 2 key maps - one lower to upper and one straight through. Then
- can use a pointer to it in buffer for case folding.
- - Support for multiple screens. A screen is the thing that holds
- windows. Each screen has its own width, height, etc. With this I
- should be able to implement work spaces, add enough hooks for X and
- maybe stacked windows.
- - Workspaces: Instead of mearly hiding buffers, have workspaces. These
- are seprate contexts. Might be better done as running another ME2.
-